/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 刘柄华
 * Date: 2022-06-12
 * Time: 19:02
 */
import java.util.*;

/*
*  跳石板
* 当前所在的编号为K的 石板，小易单次只能往前跳K的一个约数(不含1和K)步，即跳到K+X(X为K的一个非1和本身的约数)的位置。
* 小易当前处在编号为N的石板，他想跳到编号恰好为M的石板去，小易想知道最少需要跳跃几次可以到达。
* */
public class Test1动态规划 {
    public static void main(String[] args){
      Scanner sc=new Scanner(System.in);
      int n=sc.nextInt();
      int m=sc.nextInt();
        int[] stem = new int[m+1];
        for(int i=0;i<m+1;i++){
            stem[i] = Integer.MAX_VALUE;
        }
        stem[n] = 0;
        for(int i=n;i<m;i++){
            if(stem[i]==Integer.MAX_VALUE){
                continue;
            }
            //求 i 的约数
            List<Integer> list = div(i);
            for(int j:list){
                //j代表此时我们一步可以跳几个台阶
                if(i+j<=m && stem[i+j]!=Integer.MAX_VALUE){
                    stem[i+j]=Math.min(stem[i+j],stem[i]+1);
                }else if(i+j<=m){
                    stem[i+j] = stem[i]+1;
                }
            }
        }
        if(stem[m]==Integer.MAX_VALUE){
            System.out.println(-1);
        }else {
            System.out.println(stem[m]);
        }

    }

    public static List<Integer> div(int i){
        List<Integer> list = new ArrayList<>();
        for(int j=2;j*j<=i;j++){
            if(i%j==0){
                list.add(j);
                if(i/j!=j){
                    list.add(i/j);
                }
            }
        }
        return list;
    }
}
